"""
一个简单实例
Task1
使用 AISocietyPromptTemplateDict，创建一个角色扮演任务Agent。
假设你想让 AI 扮演一个“健康顾问”，为一个“患者”提供饮食和锻炼建议。
请用思维链方式分解整个建议过程，逐步提供健康方案。
"""

from camel.prompts.ai_society import AISocietyPromptTemplateDict
from camel.agents import ChatAgent
from camel.models import ModelFactory
from camel.prompts import TextPrompt
from camel.types import ModelPlatformType
import os
from dotenv import load_dotenv
from camel.agents import TaskSpecifyAgent
from camel.types import RoleType

# 创建模型并明确设置流式模式
model_config = {
    "stream": True,  # 必须为 True
    "max_tokens": 8192  # 设置一个合理的值
}

load_dotenv()

# 从环境变量中获取 API Key
api_key = os.getenv('MODELSCOPE_SDK_TOKEN')
if not api_key:
    raise ValueError("环境变量 'MODELSCOPE_SDK_TOKEN' 未设置。请确保已设置该变量并重新运行程序。")

model = ModelFactory.create(
    model_platform=ModelPlatformType.OPENAI_COMPATIBLE_MODEL,
    model_type="Qwen/Qwen3-235B-A22B",
    url='https://api-inference.modelscope.cn/v1/',
    api_key=api_key,
    model_config_dict=model_config
)

# 创建提示模板字典
prompt_dict = AISocietyPromptTemplateDict()

# 获取助手的系统提示
assistant_system_prompt = prompt_dict[RoleType.ASSISTANT]

task_specify_agent = TaskSpecifyAgent(
    model=model,
    task_specify_prompt=assistant_system_prompt,
    output_language='中文'
)

response = task_specify_agent.run(
    task_prompt="为一个患者提供饮食和锻炼建议。请用思维链方式分解整个建议过程，逐步提供健康方案",
    meta_dict=dict(
        assistant_role="健康顾问",
        user_role="患者"
    )
)

print(response)